PICの応用回路(1)  ・・・・  赤外線リモコン: 時間信号の扱い方


          (参考文献) PICとセンサの電子工作(2008) 鈴木哲哉 著  ラトルズ



  1. C言語によるプログラミング:


  PICマイコン等は、直接には「機械語」によりマイコン内部の取り決めに従って操作される。(ファイル名には、.hex が付く) その上位言語として、「アセンブリー言語(表示:.asm)」をソース・プログラム用に検討したが、動作命令の単位で記述する必要があり かなり難解で、どちらかというと教育・実験用である。 もう少し大きなプログラムを作成するには、英語の文法に近く 扱いが容易な「C言語」が好まれる傾向にある。そこで、今後のプログラミングはすべてC言語で行なうことにした。(その他、PIC BASIC、などいくつかの言語グループがある)


  ● C言語によるソース・ファイルの開発ツールは、Cコンパイラを含む HI-TEC C PRO (マイクロチップ・テクノロジー社・PIC ICの製造元)のライトモード(PICC-Lite コンパイラを含む: 無料)をダウンロードして用いた。(高価な市販品に比べ 最適化が充分行なわれないが、無料で用いることが出来る) ・・・ プログラム・ソフト名は、「MPLAB IDE (ver 8.63)」
  アセンブリー言語の場合と全く同様に、プロジェクト・ウィザードから始めて プロジェクト、および、C言語によるソースファイル(.c)を作製し、ビルドによって 機械語ファイル(HEXファイル(.hex))を含むいくつかのファイルが自動的に創成される。

    ・・・ MPLAB IDE (英文のみ)のダウンロード元: http://www.microchip.co.jp/download.html


  ● 機械語ファイルをPICに書き込むには、プログラマー(ライタ)が必要で、 @ Aki PIC programmer Ver 4 (秋月電子)、 あるいは、 A PICkit 2 (ソフトは Ver2.61)(あるいは 性能がほとんど同じ PICkit 3 (マイクロチップ・テクノロジー社): 先端を基板の端子に差し込むことによって、PIC-IC を抜かずに手軽にプログラミングでき、マイクロチップ・テクノロジー社のほぼ全機種に対応) の両方を、使い分けて用いた。

     




  2. 赤外線リモコンの実験:  ・・・・ WHILE文、タイマー0の使い方


  一般家電製品の赤外線リモコンは、日本では現在はすべて 38kHzの変調信号をやり取りする取り決めになっている。その変調信号によって作られた時間信号の構造は、最初に、「リーダ」と呼ばれる 信号を認識する部分があり、その後に、「データ」が続き、最後に「ストップ・ビット」が付け加えられる。 この時間信号のパターンは、大きく分けて、家電製品協会フォーマットとNECフォーマットに分けられている。(* 赤外線リモコンの出始めの頃、リモコンを使うと他の機器も勝手に動き出すのであちこち手で押さえてボタンを押した覚えがある(?))
  長いH、Lのリーダの後、データは Hの時間が一定で短く、Lの時間の長さによって 1 か 0 かを区別する。

  


  (1) 送信器:

  受信器に用いた 赤外線受信モジュール PL-IRM0208 は、38kHzの赤外線に対応して濾波する優れた素子であるが、入力を反転させ負論理で出力するで、送信器の段階で負論理で構成し、受信器では正論理とした。

  

  ・ PIC12F675の内部クロックは 4MHz なので、動作クロックは 1MHz(×1/4)となり、タイマー0 の分周=1/32OPTION の下位3桁 100 で 1/32: 000 1/2, 001 1/4, 010 1/8, 011 1/16, ・・・ 111 1/256)としたので 、TMR0の単位は 32μS。 したがって、#define で定めた信号の各値による時間は、RH=3.2mS、RL=1.6mS、DH=0.58mS、DL1=1.70mS、DL2=0.58mS、ch1+ch2(チャタリング防止時間・8ビット動作なので256以上は2つに分ける)=10.0mS、 となる。

  ・ 関数(void) shot(s) は、38kHzの1波を与え、その時間調整には NOP()(=何もしない)を入れて行なった。 送信する信号は負論理なので、shot(0) のとき赤外線を出力し、shot(1) のときは出力を出さない。

  ・ 関数 main では、この shot(s)を、TMR0 を用いて、所定の時間繰り返して発射する。 while 文は、while(1):永遠に繰り返す、 while(SW): SW が押されるまで待つ、あるいは、while(1)と組み合わせて、SWが押されている間 以下のことを繰り返す、 TMR0 = 0、while(TMR0 < RL): タイマー0 が RL になるまで、となる。 また、while(IR): IR信号がHになるのを待つ、 while(IR == 0): IR信号がLになるまで待つ、のように用いられる。
  データ数はとりあえず N = 8 ビット としたが、この設定で 75まで可能。 配列 sig[ N ] = {0,0、1、0、1、0、0、0} のように記述し、 for(i=0; i<N; i++) 文 により i=Nまで一つ一つ扱うことができる。


  

  ● ソース



  (2) 受信器:

  ・ 受信器の場合は、赤外線受信モジュールで受けるために、負論理で入ってきた信号が逆転して 正論理になる。 PIC16F628A も同様に、発振4MHz、動作クロック1MHzで、タイマ0 を 32分周して、送信器と同じ時間単位で扱う。

  ・ main では、まず リーダ待ちループ(信号時間が80未満ならば繰り返す)を経て、リーダ信号が来たなら次に進め、リーダ と 各データの H をやり過ごし、データの L の時間を記録して 配列 t [ i ] を作る。 この t [ i ] の長さが TMR0の単位で 100以上か、30未満かで分け、配列 s[ i ] の 0、1 を振り分ける。そして、この s[ i ] の要素を、あらかじめ設定した データ配列 sig[ i ] の各要素と照合し、8個すべてが一致している場合に出力する。

 


  

  ● ソース


  送・受信器を組み合わせて送信テストをすると、SWを押し続けると、受信機のLED ON の時間中 マイコンの処理時間の短時間消灯しながらも 連続的に点灯した。
  トランジスタで出力UPしたので、赤外線の制御可能な到達距離は 5m以上だった。 ただし、赤外線LED(TLN110相当品: φ5mm、λ=940nm、40mW・50mA)の 半減角は 15°で狭く、外れると動作しにくい。
  また、送信器は負論理のため、SWを押さないときでも100mA程度の電流が流れているので、電源スイッチを付けるか、電源をスリープモードにする工夫が必要。

  * 赤外線解析器(PIC12F683、ラトルズの「プリント基板で作るPIC応用装置」付録の基板を使用。リーダ、データの H、Lの時間を記録して、シリアルでcsv形式でパソコンに送るもの)により測定したところ、実際の赤外線リモコン、たとえば、エアコンのリモコン(富士通、点灯時)では、15byte × 8bit = 120bit にもなった。(尚、TeraTermのシリアルポートのボー・レートは1200、フロー制御なし。)
  赤外線解析器のプログラムは、逐一各時間を記録して、シリアル通信でパソコンへ送るものとなっている。

 


  §  「ことばの神」のあかし:

  マイコンを始めとする、あらゆるコンピューターは、比較的単純なデジタル回路を非常にたくさん組み合わせた構造になっています。 これに対し、ある程度余裕をもたせた領域に、非常に”知的な”ソフトウェアを書き込んで、組み込まれたハードウェアの規則に従ってですが、ほどんど自在に動かします。
  このソフトウェアは、最も低次元の「機械語」があり、さらに上位言語として、アセンブリ言語(動作単位で命令する)があり、その上に、BASIC、FORTRAN、C言語などの「高級言語」が作られ、英語などのすでに存在する日常言語に類似した文法や、通常用いる論理思考に適合した言語になっています。これらの言語は すべて、コンパイラによって機械語に「翻訳」されて用いられます。 つまり、「言葉」によって「機械」に「指令」を与えて、時間やタイミングを定め、電圧を測定し、計算し、通信し、周辺機器を動かします。

  生物の仕組みも、コンピューターと全く同様です。 生物体を「駆動」するための「指令」を与える すべての「情報」は、あらかじめ 「DNA」の中に書き込まれていますDNAというソフトウェアが、その生物の発生、成長、代謝、脳・神経系などのすべてをコントロールしています。 通常の機械のコンピューターが 0、1 の2進法であるのに対し、DNAは A、T、C、G の4種の塩基が重複して配列することによって 個(n は塩基の数)もの情報が形作られ、これは2進法の 2個よりもはるかに効率よくコンパクトに書き込むことができ、1本の非常に長い情報体高分子を形成し、RNAへの転写や自己複製をします。
  ヒトでは 約3Gbp(30億bp(Base Pairs)であり、その長さは、直線にすると約1mで、体の全細胞(60兆個)にあるDNAをすべてつなげると 太陽系の直径(60兆m)ほどにもなりますが、その内、遺伝子部分は 約5万箇所で、全体の4−5%であり、他の95%以上は意味を持たない部分(”がらくた(junk)遺伝子”)と呼ばれる部分です。 この”がらくた遺伝子”は、生物体の中で唯一、無駄が許された、あるいは、余裕のある部分になっています。

  これは、ちょうど、ある設計者が、コンピューターのハードにプログラム余裕をもって書き込んだかのようです。他の、RNA転写、タンパク質合成、代謝などの「機械的部分」では無駄な部分は一切ありません。
  このDNAは、非常にミクロな単位で構成されているために、人工的に正確につなげることは「不確定性原理」によって原理的に不可能です。ほとんど限界に近いところで SPring8などの高エネルギー線観測装置によってDNAの酵素反応(分子量: 数千程度)の写真が撮られましたが、ピンボケして像が分からなくなる寸前です。また、化学合成では、塩基の数が増えると 指数関数的に困難さが増していき、たったの100個つなげることさえもできません。(プライマーとして50個程度が限界) もちろん、自然発生的にできるものではありません。
  したがって、この非常に小さく 長い、1本の情報体高分子が”存在する”ということ そのものが、謎であり、”奇跡”です。( → 生物における主の主権



   「(永遠の)初めに ことば があった。 ことばは神とともにあった。 ことばは神であった。」(ヨハネ1:1)

    ・・・・ * ここで、「初め」((ギ)アルケー)とは、永遠の初め・永遠の根源という意味。 創世記1:1の「初め」((ヘ)ベレーシス、(ギ)カタポレー =創造の初め とは異なる。 そして、「ことば」((ギ)ロゴス: 言葉・理性・理論)とは、「キリスト」を指す)

  神は、「ことばの神」です。
  天地万物は、神様のことばによって創造されました。 神様のことばによって、宇宙や生き物が創造され(創世記1:1)、また、神様のことばがすべてのことを成し遂げます。(イザヤ55:11) 神様は、多くのことをあらかじめ「予告」して語られ、それから事をなされます。
  そして、「神のことば」とは、御子キリスト・イエス様です。(ヨハネ1:1)

  神様が言葉によって創造される時、どのようなメカニズムで具体的に事が動かされるのでしょう?
  それは、みこころに従って、あらかじめ創造されたメカニズムがあって、主のことばによって物事が成し遂げられるように「設定」されている、ということになります。 これは、生物体においても、コンピューターの基本構造においても、同様に成立している事実です。
  ただし、主のことばによる創造・再創造は、目に見える物質的な世界だけではなく、「霊的」な世界をも含むかたちです。 そして、神様のことばが私たちにゆだねられた場合、「預言」という形になります。

  「イエスの御名」は、霊の世界において、それを実行する「権威」(=実行に伴う力)となるものです。私たちの語る言葉に、ちょうど、会社で社長の印を書類に押すと その書類が効力を伴ったものになるように、「イエスの御名」によって語り、あるいは、命令する「言葉」には 特別な「力」を帯びています。そして、御名によって、「癒し」や「悪霊追い出し」を行い、また、信仰によるあらゆる「奇跡」を行なうことができます。(マルコ16:16−) (・・・ ただし、不信者がいたずらに御名を用いると、その人自身がひどい目に遭うので注意)

  これは、天地万物というハードウェアにあらかじめ設定されている、いわば、「霊的な法則」であり、御子イエス様が 創造主でおられることの、きわめて直接的な証明になっています。



                     戻る